/* 运算符-赋值运算符
 *
 * @link: https://www.runoob.com/go/go-operators.html
 */

// 包申明
package main

// 引入包
import (
	"fmt"
)

// 入口函数
func main() {
	var a int = 21
	var c int

	c = a //简单的赋值运算符，将一个表达式的值赋给一个左值
	fmt.Printf("第 1 行 - =  运算符实例，c 值为 = %d\n", c)

	c += a //相加后再赋值
	fmt.Printf("第 2 行 - += 运算符实例，c 值为 = %d\n", c)

	c -= a //相减后再赋值
	fmt.Printf("第 3 行 - -= 运算符实例，c 值为 = %d\n", c)

	c *= a //相乘后再赋值
	fmt.Printf("第 4 行 - *= 运算符实例，c 值为 = %d\n", c)

	c /= a //相除后再赋值
	fmt.Printf("第 5 行 - /= 运算符实例，c 值为 = %d\n", c)

	c = 200 //重置一个值

	c <<= 2 //	左移后赋值
	fmt.Printf("第 6行  - <<= 运算符实例，c 值为 = %d\n", c)

	c >>= 2 //右移后赋值
	fmt.Printf("第 7 行 - >>= 运算符实例，c 值为 = %d\n", c)

	c &= 2 //按位与后赋值
	fmt.Printf("第 8 行 - &= 运算符实例，c 值为 = %d\n", c)

	c ^= 2 //按位异或后赋值
	fmt.Printf("第 9 行 - ^= 运算符实例，c 值为 = %d\n", c)

	c |= 2 //按位或后赋值
	fmt.Printf("第 10 行 - |= 运算符实例，c 值为 = %d\n", c)
}

/*
运行结果:
第 1 行 - =  运算符实例，c 值为 = 21
第 2 行 - += 运算符实例，c 值为 = 42
第 3 行 - -= 运算符实例，c 值为 = 21
第 4 行 - *= 运算符实例，c 值为 = 441
第 5 行 - /= 运算符实例，c 值为 = 21
第 6行  - <<= 运算符实例，c 值为 = 800
第 7 行 - >>= 运算符实例，c 值为 = 200
第 8 行 - &= 运算符实例，c 值为 = 0
第 9 行 - ^= 运算符实例，c 值为 = 2
第 10 行 - |= 运算符实例，c 值为 = 2
*/
